// pages/ranking/ranking.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    rankings: [],
    isLoading: false,
    noMore: false,
    page: 1,
    pageSize: 10,
    activeTab: 'price-20',
    currentLocation: '天河区',
    locations: ['天河区', '越秀区', '海珠区', '荔湾区', '白云区', '黄埔区', '番禺区', '花都区', '南沙区', '从化区', '增城区'],
    locationsWithEmoji: [
      { name: '荔湾区', emoji: '🏮', desc: '老城区，岭南文化中心' },
      { name: '越秀区', emoji: '🏛️', desc: '广州中心城区，商业发达' },
      { name: '海珠区', emoji: '🌉', desc: '滨江区域，风景优美' },
      { name: '天河区', emoji: '🏙️', desc: '现代CBD，购物天堂' },
      { name: '白云区', emoji: '☁️', desc: '白云山脚，空气清新' },
      { name: '黄埔区', emoji: '🚢', desc: '黄埔军校旧址，历史悠久' },
      { name: '番禺区', emoji: '🏞️', desc: '长隆乐园，亲子游好去处' },
      { name: '花都区', emoji: '✈️', desc: '空港经济区，交通便利' },
      { name: '南沙区', emoji: '⚓', desc: '滨海新区，海鲜美食' },
      { name: '从化区', emoji: '🌄', desc: '温泉胜地，山清水秀' },
      { name: '增城区', emoji: '🍊', desc: '荔枝之乡，水果丰富' }
    ],

    // 地铁站数据
    metroLines: [
      {
        id: 1,
        name: '1号线',
        color: '#E4012E',
        stations: ['西朗', '广州东站', '体育中心', '体育西路', '杨箕', '东山口', '烈士陵园', '农讲所',
          '公园前', '西门口', '陈家祠', '长寿路', '黄沙', '芳村', '花地湾', '坑口', '西朗']
      },
      {
        id: 2,
        name: '2号线',
        color: '#00529B',
        stations: ['嘉禾望岗', '广州南站', '石壁', '会江', '南浦', '洛溪', '南洲', '东晓南', '江泰路',
          '昌岗', '江南西', '市二宫', '海珠广场', '公园前', '纪念堂', '越秀公园', '广州火车站',
          '三元里', '飞翔公园', '白云公园', '白云文化广场', '萧岗', '江夏', '黄边', '嘉禾望岗']
      },
      {
        id: 3,
        name: '3号线',
        color: '#F9B700',
        stations: ['天河客运站', '五山', '华师', '岗顶', '石牌桥', '体育西路', '珠江新城', '广州塔',
          '客村', '大塘', '沥滘', '厦滘', '大石', '汉溪长隆', '市桥', '番禺广场']
      },
      {
        id: 3.1,
        name: '3号线北延段',
        color: '#F9B700',
        stations: ['体育西路', '林和西', '广州东站', '燕塘', '梅花园', '京溪南方医院', '同和', '永泰',
          '白云大道北', '嘉禾望岗', '龙归', '人和', '高增', '机场南', '机场北']
      },
      {
        id: 4,
        name: '4号线',
        color: '#00A650',
        stations: ['南沙客运港', '南横', '塘坑', '大涌', '广隆', '飞沙角', '金洲', '蕉门', '黄阁',
          '黄阁汽车城', '庆盛', '东涌', '低涌', '海傍', '石碁', '官桥', '新造', '大学城南',
          '大学城北', '官洲', '万胜围', '车陂南', '车陂', '黄村']
      },
      {
        id: 5,
        name: '5号线',
        color: '#C5003E',
        stations: ['滘口', '坦尾', '中山八', '西场', '西村', '广州火车站', '小北', '淘金', '区庄',
          '动物园', '杨箕', '五羊邨', '珠江新城', '猎德', '潭村', '员村', '科韵路', '车陂南',
          '东圃', '三溪', '鱼珠', '大沙地', '大沙东', '文冲']
      },
      {
        id: 6,
        name: '6号线',
        color: '#79238E',
        stations: ['浔峰岗', '横沙', '沙贝', '河沙', '坦尾', '如意坊', '黄沙', '文化公园', '一德路',
          '海珠广场', '北京路', '沙河', '云台花园', '大金钟路', '中医药大学', '梓元岗', '广州火车站']
      },
      {
        id: 7,
        name: '7号线',
        color: '#97D700',
        stations: ['广州南站', '石壁', '谢村', '钟村', '汉溪长隆', '南村万博', '员岗', '板桥', '大学城南']
      },
      {
        id: 8,
        name: '8号线',
        color: '#008FD9',
        stations: ['滘心', '西村', '彩虹桥', '陈家祠', '华林寺', '文化公园', '同福西', '凤凰新村',
          '沙园', '宝岗大道', '昌岗', '晓港', '中大', '鹭江', '客村', '赤岗', '磨碟沙',
          '新港东', '琶洲', '万胜围']
      },
      {
        id: 9,
        name: '9号线',
        color: '#8FC41F',
        stations: ['飞鹅岭', '花都汽车城', '广州北站', '花城路', '花果山公园', '花都广场', '马鞍山公园',
          '花都体育中心', '镇龙北', '镇龙', '中新', '庆盛', '明珠', '飞沙角', '宝岗大道']
      },
      {
        id: 13,
        name: '13号线',
        color: '#8B0000',
        stations: ['鱼珠', '裕丰围', '双岗', '南海神庙', '夏园', '南岗', '沙村', '白江', '新塘']
      },
      {
        id: 14,
        name: '14号线',
        color: '#D4A017',
        stations: ['嘉禾望岗', '白云东平', '夏良', '太和', '竹料', '钟落潭', '马沥', '新和', '太平',
          '神岗', '赤草', '从化客运站', '东风', '红卫', '新南', '枫下', '知识城']
      },
      {
        id: 21,
        name: '21号线',
        color: '#8E236B',
        stations: ['员村', '天河公园', '棠东', '黄村', '大观南路', '天河智慧城', '神舟路', '科学城',
          '苏元', '水西', '长平', '金坑', '镇龙西', '镇龙', '增城广场']
      },
      {
        id: 18,
        name: '18号线',
        color: '#29AB87',
        stations: ['冼村', '磨碟沙', '沙园', '西村', '陈家祠', '广州火车站']
      }
    ],

    // 筛选相关
    showMetroSelector: false, // 是否显示地铁站选择器
    selectedMetroLine: null,  // 选中的地铁线路
    selectedMetroStation: '', // 选中的地铁站
    filterMode: 'area',       // 筛选模式：'area'表示按区域筛选，'metro'表示按地铁站筛选

    // 排序相关
    sortBy: 'rating',
    sortOrder: 'desc',

    // 筛选面板相关
    showFilterPanel: false,
    selectedArea: 'all',
    selectedPrice: 'all',
    selectedCuisine: 'all',
    selectedRating: 'all',
    selectedReviewCount: 'all', // 新增评分人数筛选
    selectedEnvironment: 'all',
    isFilterActive: false,

    // 新增筛选选项
    ratingOptions: [
      { value: 'all', label: '不限' },
      { value: '4.8+', label: '4.8分以上', emoji: '🌟' },
      { value: '4.5+', label: '4.5分以上', emoji: '⭐' },
      { value: '4.0+', label: '4.0分以上', emoji: '✨' },
      { value: 'under4', label: '4.0分以下', emoji: '💫' }
    ],

    // 评分人数选项
    reviewCountOptions: [
      { value: 'all', label: '不限' },
      { value: '1000+', label: '1000人以上', emoji: '🔥' },
      { value: '500+', label: '500人以上', emoji: '🌟' },
      { value: '200+', label: '200人以上', emoji: '✨' },
      { value: 'under200', label: '200人以下', emoji: '👤' }
    ],

    environmentOptions: [
      { value: 'all', label: '不限' },
      { value: 'quiet', label: '安静', emoji: '🤫' },
      { value: 'lively', label: '热闹', emoji: '🎉' },
      { value: 'outdoor', label: '户外座位', emoji: '☀️' },
      { value: 'elegant', label: '优雅格调', emoji: '✨' }
    ],

    // 区域选择弹窗相关
    showLocationPanel: false,
    locationAnimation: {},
    currentSelectingLocation: '',

    // 弹窗相关数据
    showPopup: false,
    currentRestaurant: null,
    myRating: 0,
    isLoadingDetails: true,

    // 特色餐厅数据
    featuredRestaurant: null,

    // 改为字符串类型，用于存储具体的震动效果类名
    pageShakeAnimation: false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 加载排行榜数据
    this.loadRankingData();

    // 加载特色餐厅数据
    const api = require('../../utils/api.js');
    api.getFeaturedRestaurant().then(res => {
      if (res.code === 0) {
        this.setData({
          featuredRestaurant: res.data
        });
      } else {
        console.error('获取特色餐厅失败:', res.message);
      }
    }).catch(err => {
      console.error('获取特色餐厅失败:', err);
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 从其他页面返回时刷新数据
    if (this.data.rankings.length === 0) {
      this.loadRankingData();
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 地区选择
   */
  changeLocation() {
    // 显示筛选模式选择
    wx.showActionSheet({
      itemList: ['按区域筛选', '按地铁站筛选'],
      success: (res) => {
        if (!res.cancel) {
          if (res.tapIndex === 0) {
            // 区域筛选
            this.setData({ filterMode: 'area' });
            this.showAreaSelector();
          } else {
            // 地铁站筛选
            this.setData({ filterMode: 'metro' });
            this.showMetroSelector();
          }
        }
      }
    });
  },

  /**
   * 显示区域选择器
   */
  showAreaSelector() {
    const animation = wx.createAnimation({
      duration: 300,
      timingFunction: 'ease-out',
    });

    animation.translateY(0).opacity(1).step();

    this.setData({
      showLocationPanel: true,
      locationAnimation: animation.export(),
      currentSelectingLocation: this.data.currentLocation
    });

    // 添加振动反馈
    wx.vibrateShort({
      type: 'light'
    });
  },

  /**
   * 关闭区域选择器
   */
  closeLocationPanel() {
    const animation = wx.createAnimation({
      duration: 300,
      timingFunction: 'ease-out',
    });

    animation.translateY('100%').opacity(0).step();

    this.setData({
      locationAnimation: animation.export()
    });

    setTimeout(() => {
      this.setData({
        showLocationPanel: false
      });
    }, 300);
  },

  /**
   * 显示地铁站选择器
   */
  showMetroSelector() {
    this.setData({
      showMetroSelector: true
    });

    // 添加振动反馈
    wx.vibrateShort({
      type: 'light'
    });
  },

  /**
   * 关闭地铁站选择器
   */
  closeMetroSelector() {
    this.setData({
      showMetroSelector: false
    });
  },

  /**
   * 选择地铁线路
   */
  selectMetroLine(e) {
    const lineId = parseFloat(e.currentTarget.dataset.lineId);
    const metroLine = this.data.metroLines.find(line => line.id === lineId);

    this.setData({
      selectedMetroLine: metroLine,
      selectedMetroStation: ''
    });
  },

  /**
   * 选择地铁站
   */
  selectMetroStation(e) {
    const station = e.currentTarget.dataset.station;

    this.setData({
      selectedMetroStation: station
    });
  },

  /**
   * 确认地铁站选择
   */
  confirmMetroSelection() {
    if (!this.data.selectedMetroStation) {
      wx.showToast({
        title: '请选择地铁站',
        icon: 'none'
      });
      return;
    }

    const lineName = this.data.selectedMetroLine.name;
    const stationName = this.data.selectedMetroStation;
    const locationText = `${lineName} ${stationName}站`;

    this.setData({
      currentLocation: locationText,
      showMetroSelector: false,
      rankings: [],
      page: 1,
      noMore: false
    }, () => {
      this.loadRankingData();

      wx.showToast({
        title: `已切换到${locationText}`,
        icon: 'none'
      });
    });
  },

  /**
   * 加载排行榜数据
   */
  loadRankingData() {
    const {
      page, currentLocation, sortBy, sortOrder,
      selectedArea, selectedPrice, selectedCuisine,
      selectedRating, selectedReviewCount, selectedEnvironment,
      filterMode
    } = this.data;

    this.setData({ isLoading: true });

    // 构建请求参数
    const params = {
      page,
      pageSize: this.data.pageSize,
      sortBy,
      sortOrder,
      price: selectedPrice,
      cuisine: selectedCuisine,
      rating: selectedRating,
      reviewCount: selectedReviewCount,
      environment: selectedEnvironment
    };

    // 根据筛选模式添加不同的参数
    if (filterMode === 'area') {
      params.location = currentLocation;
      params.area = selectedArea;
    } else {
      // 解析地铁线路和站点
      const locationParts = currentLocation.split(' ');
      if (locationParts.length >= 2) {
        // 将"3号线"传递为metro参数，将"华师"传递为station参数
        params.metro = locationParts[0];
        params.station = locationParts[1].replace('站', '');
      }
    }

    console.log('筛选参数:', params);

    // 使用API模块获取真实数据
    const api = require('../../utils/api.js');
    api.getRankings(params).then(res => {
      if (res.code === 0) {
        const restaurants = res.data.restaurants || [];

        // 如果是第一页，直接替换数据
        if (page === 1) {
          this.setData({
            rankings: restaurants,
            isLoading: false,
            noMore: !res.data.hasMore
          });
        } else {
          // 如果不是第一页，追加数据
          this.setData({
            rankings: [...this.data.rankings, ...restaurants],
            isLoading: false,
            noMore: !res.data.hasMore
          });
        }
      } else {
        wx.showToast({
          title: res.message || '获取餐厅数据失败',
          icon: 'none'
        });
        this.setData({ isLoading: false });
      }
    }).catch(err => {
      console.error('获取排行榜数据失败:', err);
      wx.showToast({
        title: '获取排行榜数据失败',
        icon: 'none'
      });
      this.setData({ isLoading: false });
    });
  },

  /**
   * 切换分类标签
   */
  changeTab(e) {
    const tab = e.currentTarget.dataset.tab;

    if (tab !== this.data.activeTab) {
      this.setData({
        activeTab: tab,
        rankings: [],
        page: 1,
        noMore: false
      }, () => {
        this.loadRankingData();
      });
    }
  },

  /**
   * 更改排序方式
   */
  changeSort(e) {
    const sort = e.currentTarget.dataset.sort;
    let newSortOrder = 'desc';

    // 如果点击了当前排序项，切换排序顺序
    if (sort === this.data.sortBy) {
      newSortOrder = this.data.sortOrder === 'desc' ? 'asc' : 'desc';
    }

    this.setData({
      sortBy: sort,
      sortOrder: newSortOrder,
      rankings: [],
      page: 1,
      noMore: false
    }, () => {
      this.loadRankingData();
    });
  },

  /**
   * 刷新数据
   */
  refreshData() {
    wx.vibrateShort({
      type: 'medium'
    });

    this.setData({
      page: 1,
      rankings: [],
      noMore: false
    }, () => {
      this.loadRankingData();

      wx.showToast({
        title: '刷新成功',
        icon: 'success'
      });
    });
  },

  /**
   * 切换收藏状态
   */
  toggleFavorite(e) {
    // 检查事件对象是否存在stopPropagation方法
    if (e && typeof e.stopPropagation === 'function') {
      e.stopPropagation(); // 阻止事件冒泡，防止触发showDetailPopup
    }

    // 获取参数，支持从事件对象或直接传参两种方式
    const id = e.currentTarget ? e.currentTarget.dataset.id : e.id;
    const index = e.currentTarget ? e.currentTarget.dataset.index : e.index;

    if (!id || index === undefined) {
      wx.showToast({
        title: '参数错误',
        icon: 'none'
      });
      return;
    }

    // 获取当前餐厅
    const restaurant = { ...this.data.rankings[index] };
    const newFavoriteStatus = !restaurant.isFavorite;

    // 使用API调用收藏/取消收藏
    const api = require('../../utils/api.js');
    api.toggleFavorite(id, newFavoriteStatus).then(res => {
      if (res.code === 0) {
        // 更新当前餐厅的收藏状态
        const rankings = [...this.data.rankings];
        rankings[index].isFavorite = newFavoriteStatus;

        this.setData({ rankings });

        // 添加页面震动效果
        this.setData({
          pageShakeAnimation: true
        });

        // 添加设备震动反馈
        wx.vibrateShort({
          type: 'medium'
        });

        // 500毫秒后取消震动动画
        setTimeout(() => {
          this.setData({
            pageShakeAnimation: false
          });
        }, 500);

        // 显示提示
        wx.showToast({
          title: newFavoriteStatus ? '已收藏' : '已取消收藏',
          icon: 'none'
        });
      } else {
        wx.showToast({
          title: res.message || (newFavoriteStatus ? '收藏失败' : '取消收藏失败'),
          icon: 'none'
        });
      }
    }).catch(err => {
      console.error('收藏操作失败:', err);
      wx.showToast({
        title: newFavoriteStatus ? '收藏失败' : '取消收藏失败',
        icon: 'none'
      });
    });
  },

  /**
   * 显示餐厅详情弹窗
   */
  showDetailPopup(e) {
    const restaurant = e.currentTarget.dataset.restaurant;

    if (!restaurant) {
      wx.showToast({
        title: '餐厅数据不存在',
        icon: 'none'
      });
      return;
    }

    // 确保有id字段，如果没有则使用_id
    if (!restaurant.id && restaurant._id) {
      restaurant.id = restaurant._id;
    }

    // 检查id是否存在
    if (!restaurant.id) {
      wx.showToast({
        title: '餐厅ID不存在',
        icon: 'none'
      });
      return;
    }

    // 先显示基本信息
    this.setData({
      currentRestaurant: restaurant,
      showPopup: true,
      myRating: 0,
      isLoadingDetails: true
    });

    // 使用API获取餐厅完整详情
    const api = require('../../utils/api.js');
    console.log('获取餐厅详情，ID:', restaurant.id);
    api.getRestaurantDetail(restaurant.id).then(res => {
      if (res.code === 0) {
        this.setData({
          currentRestaurant: res.data,
          myRating: res.data.myRating || 0,
          isLoadingDetails: false
        });
      } else {
        wx.showToast({
          title: res.message || '获取餐厅详情失败',
          icon: 'none'
        });
        this.setData({
          isLoadingDetails: false
        });
      }
    }).catch(err => {
      console.error('获取餐厅详情失败:', err);
      wx.showToast({
        title: '获取餐厅详情失败',
        icon: 'none'
      });
      this.setData({
        isLoadingDetails: false
      });
    });
  },

  /**
   * 隐藏餐厅详情弹窗
   */
  hideDetailPopup() {
    this.setData({
      showPopup: false
    });
  },

  /**
   * 评分功能
   */
  rateRestaurant(e) {
    const score = e.currentTarget.dataset.score;
    const oldScore = this.data.myRating;
    const restaurantId = this.data.currentRestaurant.id;

    // 如果点击的是已选中的星星，取消评分
    const newScore = oldScore === score ? 0 : score;

    this.setData({
      myRating: newScore
    });

    const api = require('../../utils/api.js');

    if (newScore > 0) {
      // 提交评分到服务器
      api.rateRestaurant(restaurantId, newScore).then(res => {
        if (res.code === 0) {
          wx.showToast({
            title: `评分成功：${newScore}星`,
            icon: 'none'
          });

          // 更新餐厅信息
          const currentRestaurant = { ...this.data.currentRestaurant };
          currentRestaurant.userAverageScore = res.data.userAverageScore;
          currentRestaurant.userReviewCount = res.data.userReviewCount;
          currentRestaurant.myRating = res.data.myRating;

          this.setData({ currentRestaurant });
        } else {
          wx.showToast({
            title: res.message || '评分失败',
            icon: 'none'
          });
          // 恢复原评分
          this.setData({ myRating: oldScore });
        }
      }).catch(err => {
        console.error('评分失败:', err);
        wx.showToast({
          title: '评分失败，请稍后再试',
          icon: 'none'
        });
        // 恢复原评分
        this.setData({ myRating: oldScore });
      });
    } else {
      // 删除评分
      api.deleteRating(restaurantId).then(res => {
        if (res.code === 0) {
          wx.showToast({
            title: '已取消评分',
            icon: 'none'
          });

          // 更新餐厅信息
          const currentRestaurant = { ...this.data.currentRestaurant };
          currentRestaurant.userAverageScore = res.data.userAverageScore;
          currentRestaurant.userReviewCount = res.data.userReviewCount;
          currentRestaurant.myRating = 0;

          this.setData({ currentRestaurant });
        } else {
          wx.showToast({
            title: res.message || '取消评分失败',
            icon: 'none'
          });
          // 恢复原评分
          this.setData({ myRating: oldScore });
        }
      }).catch(err => {
        console.error('取消评分失败:', err);
        wx.showToast({
          title: '取消评分失败，请稍后再试',
          icon: 'none'
        });
        // 恢复原评分
        this.setData({ myRating: oldScore });
      });
    }
  },

  /**
   * 在弹窗中切换收藏状态
   */
  toggleFavoriteInPopup() {
    const currentRestaurant = { ...this.data.currentRestaurant };
    const newFavoriteStatus = !currentRestaurant.isFavorite;
    const restaurantId = currentRestaurant.id;

    // 使用API调用收藏/取消收藏
    const api = require('../../utils/api.js');
    api.toggleFavorite(restaurantId, newFavoriteStatus).then(res => {
      if (res.code === 0) {
        // 更新当前餐厅的收藏状态
        currentRestaurant.isFavorite = newFavoriteStatus;
        this.setData({ currentRestaurant });

        // 如果是从列表中打开的，同步更新列表中的状态
        const rankings = [...this.data.rankings];
        const index = rankings.findIndex(item => item.id === restaurantId);
        if (index !== -1) {
          rankings[index].isFavorite = newFavoriteStatus;
          this.setData({ rankings });
        }

        // 添加页面震动效果
        this.setData({
          pageShakeAnimation: true
        });

        // 添加设备震动反馈
        wx.vibrateShort({
          type: 'medium'
        });

        // 500毫秒后取消震动动画
        setTimeout(() => {
          this.setData({
            pageShakeAnimation: false
          });
        }, 500);

        wx.showToast({
          title: newFavoriteStatus ? '已收藏' : '已取消收藏',
          icon: 'none'
        });
      } else {
        wx.showToast({
          title: res.message || (newFavoriteStatus ? '收藏失败' : '取消收藏失败'),
          icon: 'none'
        });
      }
    }).catch(err => {
      console.error('收藏操作失败:', err);
      wx.showToast({
        title: newFavoriteStatus ? '收藏失败' : '取消收藏失败',
        icon: 'none'
      });
    });
  },

  /**
   * 导航到餐厅
   */
  navigateToRestaurant() {
    const { currentRestaurant } = this.data;
    const address = currentRestaurant.fullAddress || currentRestaurant.location;

    wx.showModal({
      title: '提示',
      content: `是否导航到"${currentRestaurant.name}"？`,
      success: (res) => {
        if (res.confirm) {
          // 实际应用中应使用位置服务API
          wx.showToast({
            title: `正在导航到: ${address}`,
            icon: 'none',
            duration: 2000
          });
        }
      }
    });
  },

  /**
   * 加载更多
   */
  loadMore() {
    if (this.data.isLoading || this.data.noMore) return;

    this.setData({
      page: this.data.page + 1
    }, () => {
      this.loadRankingData();
    });
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.setData({
      page: 1,
      rankings: [],
      noMore: false
    }, () => {
      this.loadRankingData();
      wx.stopPullDownRefresh();
    });
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /**
   * 切换筛选面板显示/隐藏
   */
  toggleFilterPanel() {
    this.setData({
      showFilterPanel: !this.data.showFilterPanel
    });
  },

  /**
   * 关闭筛选面板
   */
  closeFilterPanel() {
    this.setData({
      showFilterPanel: false
    });
  },

  /**
   * 选择区域
   */
  selectArea(e) {
    const area = e.currentTarget.dataset.area;
    this.setData({
      selectedArea: area
    });
    this.updateFilterActiveStatus();
  },

  /**
   * 选择价格
   */
  selectPrice(e) {
    const price = e.currentTarget.dataset.price;
    this.setData({
      selectedPrice: price
    });
    this.updateFilterActiveStatus();
  },

  /**
   * 选择菜系
   */
  selectCuisine(e) {
    const cuisine = e.currentTarget.dataset.cuisine;
    this.setData({
      selectedCuisine: cuisine
    });
    this.updateFilterActiveStatus();
  },

  /**
   * 选择排序方式
   */
  selectSortBy(e) {
    const sort = e.currentTarget.dataset.sort;
    this.setData({
      sortBy: sort
    });
    this.updateFilterActiveStatus();
  },

  /**
   * 选择评分
   */
  selectRating(e) {
    const rating = e.currentTarget.dataset.rating;
    this.setData({
      selectedRating: rating
    });
    this.updateFilterActiveStatus();
  },

  /**
   * 选择评分人数
   */
  selectReviewCount(e) {
    const count = e.currentTarget.dataset.count;
    this.setData({
      selectedReviewCount: count
    });
    this.updateFilterActiveStatus();
  },

  /**
   * 选择环境
   */
  selectEnvironment(e) {
    const environment = e.currentTarget.dataset.environment;
    this.setData({
      selectedEnvironment: environment
    });
    this.updateFilterActiveStatus();
  },

  /**
   * 更新筛选按钮高亮状态
   */
  updateFilterActiveStatus() {
    // 检查是否有激活的筛选条件
    const isActive =
      this.data.selectedArea !== 'all' ||
      this.data.selectedPrice !== 'all' ||
      this.data.selectedCuisine !== 'all' ||
      this.data.selectedRating !== 'all' ||
      this.data.selectedReviewCount !== 'all' ||
      this.data.selectedEnvironment !== 'all' ||
      this.data.sortBy !== 'rating';

    this.setData({
      isFilterActive: isActive
    });
  },

  /**
   * 重置筛选条件
   */
  resetFilters() {
    this.setData({
      selectedArea: 'all',
      selectedPrice: 'all',
      selectedCuisine: 'all',
      selectedRating: 'all',
      selectedReviewCount: 'all',
      selectedEnvironment: 'all',
      sortBy: 'rating',
      sortOrder: 'desc',
      isFilterActive: false
    });

    // 添加振动反馈
    wx.vibrateShort();
  },

  /**
   * 应用筛选条件
   */
  applyFilters() {
    // 关闭筛选面板
    this.closeFilterPanel();

    // 重置数据并重新加载
    this.setData({
      rankings: [],
      page: 1,
      noMore: false
    }, () => {
      this.loadRankingData();

      // 添加振动反馈
      wx.vibrateShort();

      wx.showToast({
        title: '筛选已应用',
        icon: 'success'
      });
    });
  },

  /**
   * 选择地区
   */
  selectLocation(e) {
    const location = e.currentTarget.dataset.location;
    this.setData({
      currentSelectingLocation: location
    });
  },

  /**
   * 确认选择地区
   */
  confirmLocationSelection() {
    this.setData({
      currentLocation: this.data.currentSelectingLocation,
      rankings: [],
      page: 1,
      noMore: false
    }, () => {
      this.closeLocationPanel();
      this.loadRankingData();

      wx.showToast({
        title: `已切换到${this.data.currentLocation}`,
        icon: 'none'
      });
    });
  },

  /**
   * 图片预览功能
   */
  previewImage(e) {
    const src = e.currentTarget.dataset.src;
    if (!src) {
      wx.showToast({
        title: '无法预览图片',
        icon: 'none'
      });
      return;
    }

    wx.previewImage({
      current: src, // 当前显示图片的链接
      urls: [src] // 需要预览的图片链接列表
    });
  }
})